package com.tanhua.dubbo.api;

import com.tan.model.mongo.RecommendUser;
import com.tan.model.mongo.Visitors;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

@DubboService
public class VisitorsApiimpl implements  VisitorsApi{
    @Autowired
    MongoTemplate mongoTemplate;
    @Override
    public void saveVisitor(Long userId, Long visitorId, String from, String date) {
        // 1. 查询推荐用户获取分数
        Criteria recommendCriteria = Criteria.where("toUserId").is(userId)
                .and("userId").is(visitorId);
        RecommendUser recommendUser = mongoTemplate.findOne(
                Query.query(recommendCriteria),
                RecommendUser.class
        );

        // 2. 检查访客记录是否已存在（修正字段对应关系）
        Criteria visitorCriteria = Criteria.where("userId").is(visitorId)          // 被访问者ID
                .and("visitorUserId").is(userId)   // 访客ID
                .and("visitDate").is(date);           // 访问日期
        Query query = Query.query(visitorCriteria);

        if (!mongoTemplate.exists(query, Visitors.class)) {
            // 3. 不存在则插入新记录
            Visitors visitor = new Visitors();
            visitor.setUserId(visitorId);           // 被访问者ID
            visitor.setVisitorUserId(userId); // 访客ID
            visitor.setFrom(from);
            visitor.setDate(System.currentTimeMillis());
            visitor.setVisitDate(date);          // 直接使用传入的日期参数
            visitor.setScore(recommendUser.getScore());
            mongoTemplate.save(visitor);
        }
    }

    @Override
    public List<Visitors> queryVisitorsList(Long currentuserid, Long time) {
        Criteria criteria = Criteria.where("userId").is(currentuserid).and("date").gt(time);//gt大于
        Query query = Query.query(criteria).limit(4).with(Sort.by(Sort.Order.desc("date")));
        List<Visitors> visitors = mongoTemplate.find(query, Visitors.class);




        return visitors;
    }


}

